import axios from "axios";

// 创建 axios 请求实例
  const serviceAxios = axios.create({
  timeout: 10000, // 请求超时设置s
  withCredentials: true, // 跨域请求是否需要携带 cookie
  baseURL: "http://192.168.60.206:10019", // 请求基础地址,可根据环境自定义
  headers: {
    Accept: "application/json, text/plain, */*",
    "Content-Type": "application/json",
    "X-Requested-With": "XMLHttpRequest",
    "Access-Control-Allow-Origin":"*",
    "Access-Control-Allow-Headers": "Content-Type",
    "Access-Control-Allow-Methods": "PUT,POST,GET,DELETE,OPTIONS",
    // "Access-Control-Max-Age":3600
  },
});


// 创建请求拦截
serviceAxios.interceptors.request.use(
    (config) => {
      // config.data = qs.stringify(config.data); // 序列化,比如表单数据
      // 开启 token 认证
      // config.data = JSON.stringify(config.data);
        // console.log(  "请求拦截获取到的data参数!----------" );
        // console.log( config.data);
        // console.log(  "请求拦截获取到的headers参数!----------" );
        // console.log( config.headers);
        // console.log(  "请求拦截获取到的url参数!----------" );
        // console.log( config.url);
        // console.log(  "请求拦截获取到的config参数!----------" );
        // console.log( config);
        console.log("请求拦截本地存储", sessionStorage.getItem("token"));
        // 将token放到字典里面，发送给后端
        // "Access-Control-Allow-Origin":"*" //设置响应头，*表示任何地址都亦可以访问
        config.headers.Authorization = sessionStorage.getItem("token"); // 请求头携带 token

        // config.headers["Authorization"] = localStorage.getItem("token"); // 请求头携带 token

      console.log("请求配置", config);
      return config;
    },
    (error) => {
      Promise.reject(error);
    }
);


// 创建响应拦截
serviceAxios.interceptors.response.use(
    (res) => {
      let data = res.data;
      // 处理自己的业务逻辑，比如判断 token 是否过期等等
      // 代码块
      return data;
    },
    (error) => {

      let message = "";
      if (error && error.response) {
        switch (error.response.status) {
          case 302:
            message = "接口重定向了！";
            break;
          case 400:
            message = "参数不正确！";
            break;
          case 401:
            message = "您未登录，或者登录已经超时，请先登录！";
            break;
          case 403:
            message = "您没有权限操作！";
            break;
          case 404:
            message = `请求地址出错: ${error.response.config.url}`;
            break;
          case 408:
            message = "请求超时！";
            break;
          case 409:
            message = "系统已存在相同数据！";
            break;
          case 500:
            message = "服务器内部错误！";
            break;
          case 501:
            message = "服务未实现！";
            break;
          case 502:
            message = "网关错误！";
            break;
          case 503:
            message = "服务不可用！";
            break;
          case 504:
            message = "服务暂时无法访问，请稍后再试！";
            break;
          case 505:
            message = "HTTP 版本不受支持！";
            break;
          default:
            message = "异常问题，请联系管理员！";
            break;
        }
        console.log(error.toJSON());
      }
      return Promise.reject(message);
    }
);
export default serviceAxios;

// export function postUpload (file) {
//   return serviceAxios({
//     url: '/upload',
//     method: 'post',
//     data: file,        放到body
//     params : myParams   放到url路径
//     headers: {
//       'Content-Type': 'multipart/form-data'
//     }
//   })
// }
